Итак, давайте создадим приложение, которое умеет использовать WinInet на основе протокола HTTP. Создаем приложение как AppWizard на базе диалогового окна с именем TestHTTP. На диалоговую панель поставим кнопку с именем GO и привяжем к ней функцию:
void CTestHTTPDlg::OnButton1()
{
// TODO: Add your control notification handler code here
}
Итак. Нам нужно создать объект сессии интернет. Но сначало подключить заголовочный файл.
// TestHTTPDlg.cpp : implementation file // #include "stdafx.h" #include "TestHTTP.h" #include "TestHTTPDlg.h" #include "afxinet.h" ......
А вот теперь и сессию:
void CTestHTTPDlg::OnButton1()
{
CInternetSession session;
}
После этого мы можем указать протокол соединения и адрес узла.
void CTestHTTPDlg::OnButton1()
{
CInternetSession session;
CHttpConnection* pHttpCon = session.GetHttpConnection("http://www.firststeps.ru/");
}
Теперь нужно сформировать запрос к узлу:
void CTestHTTPDlg::OnButton1()
{
......
CHttpConnection* pHttpCon = session.GetHttpConnection("http://www.firststeps.ru/");
CHttpFile* pFile=pHttpCon->OpenRequest("GET","default.htm");
pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n");
}
И отослать запрос:
void CTestHTTPDlg::OnButton1()
{
......
CHttpFile* pFile=pHttpCon->OpenRequest("GET","default.htm");
pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n");
pFile->SendRequest();
}
Сервер в ответ пошлет информацию. Ее надо получить:
void CTestHTTPDlg::OnButton1()
{
......
pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n");
pFile->SendRequest();
CString stLine;
pFile->ReadString(stLine);
AfxMessageBox(stLine);
}
Если Вы запустите приложение, то после установки связи увидите диалоговое окно со строкой HTML. Действительно обычно это первый тег. Я немного усложнил программу, чтобы читать не одну, а много строк. Поместил на диалоговую панель ListBox, привязал к нему класс. И вот так изменил код программы.
void CTestHTTPDlg::OnButton1()
{
CInternetSession session;
CHttpConnection* pHttpCon = session.GetHttpConnection("http://www.firststeps.ru/");
CHttpFile* pFile=pHttpCon->OpenRequest("GET","default.htm");
pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n");
pFile->SendRequest();
CString stLine;
while (pFile->ReadString(stLine)!=FALSE)
{
m_List.AddString(stLine);
}
}
А вот так выглядит окно во время работы:
